A storage management system (SMS) provides a data storage and retrieval service. An SMS may provide a file system. An SMS may also provide fault tolerance that guarantees the consistency of the data that the SMS manages. Fault tolerance may rely on creating multiple copies of the same data to avoid data loss in the event of a device or network failure.
Data storage systems include one or more storage devices connected to a controller or manager. As used herein, the term “data storage device” refers to any device or apparatus that can be used for the storage of data, e.g., a disk drive. For explanatory purposes only and not with intent to limit the scope of the invention, the terms “disk drive,” “disk,” “storage device,” and “device” are used throughout this document interchangeably with the term “data storage device.”
A clustered system is a multi-node system made up of interconnected nodes that share and manage access to the same resources. Nodes are interconnected via a network and share access, in varying degrees, to shared storage, e.g. shared access to a set of disk drives and data blocks stored thereon. The nodes in a multi-node database system may be in the form of a group of computers (e.g. work stations, personal computers) that are interconnected via a network. Alternatively, the nodes may be the nodes of a grid. A grid is composed of nodes in the form of server blades interconnected with other server blades on a rack.
A clustered storage management system provides a storage system interface to clients inside or outside of the cluster. For example, each node in a clustered database system hosts an instance of a storage management server that works together with storage management servers running on other node instances to provide a storage management service. Working together requires the ability to communicate. Thus, a fault tolerant SMS must overcome network failures that prevent nodes from working together.
To protect against the loss of information, data in the storage system can be “mirrored” (i.e., duplicated and stored) in two or more separate storage locations. In this way, an additional copy of data is available for retrieval if the first copy cannot be accessed. However, systems may provide mirroring at relatively coarse granularity levels. For example, many systems provide mirroring at the granularity of the disk drive, i.e., entire disk drives are mirrored, even if only a portion of the data on the disk drive needs to be mirrored. By implementing mirroring on a disk drive basis, it is not normally possible to mix data with different redundancy requirements on the same disk drive.
The functions of configuring, addressing, and administering storage devices are performed manually by an administrator who must make choices as to the proper configuration to employ. When a large number of disk drives are used, this manual administration becomes more and more difficult and is prone to human error and their structures (administrative and data) do not scale well beyond a certain number of disk drives.
One of the many issues presented by the complexity of a clustered storage management system is bootstrapping the system. The configuration of such a storage system must be retrieved from persistent storage. The manual administration of managing storage system configuration data required for booting the system may be a burden for the reasons explained above.
Described herein is an approach that provides a fault tolerant storage management system that can reliably manage its own configuration data rather than relying on external administration.
The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.